Different communications across a network can have different levels of priority depending on the purpose of the communication. Typically, user operations such as file access, email access and web services are considered of higher priority than background operations such as downloading program updates, synchronizing application data and backing up local files. The user operations are considered higher priority because delays in the traffic are noticeable to the user and can lead to pauses in operations, whilst the background operations require little or no user interaction and therefore a user is unlikely to notice any delays.
In one background operation, program updates can be downloaded to the user's system in the ‘background’, while the user works normally on other tasks in the ‘foreground’. After the program updates are downloaded, the user can be notified of the presence of the program updates on his or her system and prompted for authorization to install the new updates. The higher priority communications are referred to herein as ‘foreground transfers’ whilst the lower priority communications are referred to as ‘background transfers’.
When a network becomes busy or a foreground transfer requests more bandwidth, it is beneficial if the background transfers back-off and reduce their bandwidth so that the foreground transfers are given priority. Ideally the background operations do not impact the foreground transfers.
Some approaches have been proposed for managing background transfers, however, these typically require specific intelligence in the network to achieve the bandwidth management of the background transfer. This requirement limits the applicability of the approaches to only those networks where the specific intelligence is available.
Other approaches that have been proposed that operate without intelligence in the network by controlling the rate at which background transfers are sent to a receiving node. Typically, such approaches are implemented at the sending node, as this node can directly control the data that is sent. However, whilst this is simpler to implement at the sending node, the sending node cannot directly see the effect of the network and its conditions on the transfer. Furthermore, these techniques are limited in their responsiveness to changes in the conditions in the network, and are not adaptable to different types of networks with different characteristics. Furthermore, these do not comply with standardized transport protocols.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known background data transfer techniques.